import {
	defineStore
} from 'pinia'
import {
	ref
} from 'vue'
import {
	loginApi,
	logoutApi
} from '@/api/user'


// 定义 Store
export const useUserStore = defineStore(
	'user',
	() => {
		// 用户信息
		const token = ref('')
		const user = ref()

		// 保存用户信息，登录时使用
		// const setUserInfo = async () => {
		// 	const {data} = await getInfo()
		// 	roles.value = data.roles
		// 	user.value = data.user
		// }

		// 清理用户信息，退出时使用
		const userLogout = () => {
			logoutApi()
			// removeToken()
			user.value = token.value = undefined
			uni.clearStorage()
		}

		const login = (code) => {
			return new Promise((resolve, reject) => {
				loginApi(code).then(res => {
					// 保存用户信息
					token.value = res.data.token
					user.value = res.data
					resolve()
				}).catch(error => {
					reject(error)
				})
			})
		}

		// const setToken = (val) => {
		// 	token.value = val
		// }

		// const setRefreshToken = (str) => {
		// 	refreshToken.value = str
		// }

		// 删除token
		// const removeToken = () => {
		// 	token.value = ''
		// 	refreshToken.value = ''
		// }


		// 记得 return
		return {
			token,
			user,
			// roles,
			// setUserInfo,
			userLogout,
			login
			// refreshToken,
			// setToken,
			// setRefreshToken,
			// menus,
			// hasGroup
		}
	}, {
		// 网页端配置
		// persist: true,
		// 小程序端配置
		persist: {
			storage: {
				getItem(key) {
					return uni.getStorageSync(key)
				},
				setItem(key, value) {
					uni.setStorageSync(key, value)
				},
			},
		},
	},
)